package javaCode.chapter05.本章作业;

public class Homework01 {

    public static void main(String[] args) {

        /*
        已知有个升序的数组，要求插入一个元素，该数组顺序依然是升序，
        比如: [10,12,45,90], 添加23后，数组为[10,12,23,45,90]

         */

        /*//方式一
        int temp = 0;
        int[] arr = {10, 12, 45, 90};
        int[] arr1 = new int[arr.length + 1];
        int len=arr1.length-1;
        Scanner myScanner = new Scanner(System.in);

        System.out.print("请输入要添加的数据:");
        int arrNew = myScanner.nextInt();

        for (int i = 0; i < arr.length; i++) {
            arr1[i] = arr[i];
        }

        arr1[arr1.length - 1] = arrNew;

        for (int i = 0; i < len; i++) {

            for (int j = 0; j < len - i; j++) {
                if (arr1[j] >= arr1[j + 1]) {
                    temp = arr1[j];
                    arr1[j] = arr1[j + 1];
                    arr1[j + 1] = temp;
                }
            }

        }

        arr = arr1;

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }*/

        //定义原数组
        int[] arr = {10, 12, 45, 90};
        int insertNum = 2323;
        int index = -1; //index就是要插入的位置

        //遍历 arr数组，如果发现 insertNum<=arr[i]，说明 i 就是要插入位置
        //使用index 保留 index = i;
        //如果遍历完后，没有发现 insertNum<=arr[i]，说明 index = arr.length
        //即: 添加到arr的最后

        for (int i = 0; i < arr.length; i++) {
            if (insertNum <= arr[i]) {
                index = i;
                break; //找到位置后，就退出
            }
        }

        //判断index 的值
        if (index == -1) { //说明还么有找到位置
            index = arr.length;
        }

        //扩容
        //先创建一个新的数组，大小 arr.length + 1
        int[] arrNew = new int[arr.length + 1];
        //将arr的元素拷贝到 arrNew，并且要跳过 index位置

        // i 控制arrNew的下标 ，j用来控制arr 的下标
        for (int i = 0, j = 0; i < arrNew.length; i++) {

            if (i != index) { //说明可以把 arr的元素拷贝到 arrNew
                arrNew[i] = arr[j];
                j++;
            } else { // i这个位置就是要插入的数
                arrNew[i] = insertNum;
            }
        }

        //让arr 指向 arrNew，原来的数组，就成为垃圾，被销毁
        arr = arrNew;

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }


    }
}
